package com.ruoyi.business.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.github.yulichang.base.MPJBaseMapper;
import com.github.yulichang.interfaces.MPJBaseJoin;
import com.github.yulichang.toolkit.Constant;
import com.ruoyi.business.domain.FilePerson;
import com.ruoyi.common.annotation.DataColumn;
import com.ruoyi.common.annotation.DataPermission;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 人员管理Mapper接口
 *
 * @author ruoyi
 * @date 2024-11-11
 */
public interface FilePersonMapper extends MPJBaseMapper<FilePerson> {
    /**
     * 查询人员管理
     *
     * @param id 人员管理ID
     * @return 人员管理
     */
    public FilePerson selectFilePersonById(Long id);

    /**
     * 查询人员管理列表
     *
     * @param filePerson 人员管理
     * @return 人员管理集合
     */
    public List<FilePerson> selectFilePersonList(FilePerson filePerson);

    /**
     * 新增人员管理
     *
     * @param filePerson 人员管理
     * @return 结果
     */
    public int insertFilePerson(FilePerson filePerson);

    /**
     * 修改人员管理
     *
     * @param filePerson 人员管理
     * @return 结果
     */
    public int updateFilePerson(FilePerson filePerson);

    /**
     * 删除人员管理
     *
     * @param id 人员管理ID
     * @return 结果
     */
    public int deleteFilePersonById(Long id);

    /**
     * 批量删除人员管理
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteFilePersonByIds(Long[] ids);

    public List<FilePerson> selectUserByIds(Long[] ids);

    @Override
    @DataPermission({
            @DataColumn(key = "deptName", value = "t1.dept_id"),
    })
    <DTO, P extends IPage<DTO>> P selectJoinPage(P page,
                                                 @Param(Constant.CLAZZ) Class<DTO> clazz,
                                                 @Param(Constants.WRAPPER) MPJBaseJoin<FilePerson> wrapper);
}
